package com.hy.cloud.order.controller;

import com.hy.cloud.order.entity.Order;
import com.hy.cloud.order.entity.User;
import com.hy.cloud.order.service.OrderService;
import com.hy.cloud.order.service.UserRpcService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/api/rpc")
public class OrderRpcController {

    @Autowired
    private OrderService orderService;

    @Autowired
    private UserRpcService userRpcService;

    @Autowired
    private RestTemplate restTemplate;

    /**
     * 获取带有用户信息的订单详情
     *
     * @param orderId 订单ID
     * @return 订单详情（包含用户信息）
     */
    @GetMapping("/orderWithUser/{orderId}")
    public Order getOrderWithUser(@PathVariable("orderId") Long orderId) {
        return orderService.findOrderByOrderId(orderId);
    }

    /**
     * 直接通过RestTemplate调用用户服务获取用户信息
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    @GetMapping("/user/{userId}")
    public User getUser(@PathVariable("userId") Long userId) {
        return userRpcService.getUserById(userId);
    }

    /**
     * 直接通过RestTemplate调用用户服务获取用户信息（原始方式）
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    @GetMapping("/user/direct/{userId}")
    public Object getUserDirect(@PathVariable("userId") Long userId) {
        String url = "http://localhost:10100/api/user/findUserByUserId/" + userId;
        return restTemplate.getForObject(url, Object.class);
    }
}